package com.qf.automation.file.utils;

import org.springframework.util.ClassUtils;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Objects;

/**
 * 上传工具类
 * spring mvn支持
 */
public class UploadUtil {
    /**
     * 图片上传
     * @return 返回相对路径
     * @param photo 图片文件
     * @param photoFileName 文件名
     * @param savePath 文件保存路径(相对于web根目录)
     * @return
     * @throws Exception
     */
    public String fileUpload(MultipartFile file, HttpServletRequest request) throws Exception{
        // 判断是否有上传文件
        if (Objects.isNull(file) || file.isEmpty() || Objects.isNull(file.getOriginalFilename())) { return null;
            }
        String savePath = "picture"; // 保存文件的相对目录
        String fileName = file.getOriginalFilename();
        // 文件存储路径
//        String path = "E:\\TEST\\"+savePath+"\\"+fileName+".png";
//        String path = ClassUtils.getDefaultClassLoader().getResource("static").getPath();
//        String path = request.getClass().getClassLoader().getResource("/").getPath();
        String path = request.getServletContext().getRealPath("/"+savePath+"/");
        System.out.println(path);
        // 获取当前文件类型
        String type = fileName.substring(fileName.lastIndexOf(".")+1, fileName.length());
        // 获取当前系统时间字符串
        String time = new SimpleDateFormat("yyMMddssSSS").format(new Date());// 构建新文件名
        String newFileName = time+"."+type;
        System.out.println(newFileName);
        // 按指定路径重命名构建文件
        File savefile = new File(path,newFileName);
        // 若保存文件的文件夹不存在则创建
        if(!savefile.getParentFile().exists()){
            savefile.getParentFile().mkdirs();
        }
        System.out.println("上传文件绝对路径: "+savefile.getPath());
        file.transferTo(savefile);
        return savePath+"/"+newFileName;
        }

    }

